ActionController::Routing::Routes.draw do |map|

  # special routes
  map.from_plugin :savage_beast
  map.all_issues 'issues', :controller => 'issues', :action => 'all_issues'
  map.attachment_form 'attachments/form_for', :controller => 'attachments', :action => 'form_for'
  map.autocomplete_project 'projects/autocomplete', :controller => 'projects', :action => 'autocomplete'
  map.autocomplete_status 'projects/autocomplete_status', :controller => 'projects', :action => 'autocomplete_status'
  map.autocomplete_priority 'projects/autocomplete_priority', :controller => 'projects', :action => 'autocomplete_priority'
  map.welcome '', :controller => 'welcome'

  map.resources :projects do |project|
    project.resource :owner, :controller => :users
    project.resources :members, :controller => :users
    project.resources( :issues, :name_prefix => nil,
                       :collection => { :closed => :get, :all => :get } ) do |issue|
      issue.resources( :comments, :name_prefix => nil ) do |comment|
        comment.resources :attachments
      end
    end
    # forum routes will go here...
    #
    # using the line
    # map.from_plugin :savage_beast 
    # here causes some strange issues (unable to find project routes)
    # for now I've left it as the highest priority route
  end

  #map.vote 'projects/:project_id/issues/:id/vote', :controller => 'issues', :action => 'vote', :method => :post

  map.resources :attachments
  map.resources :users

  # The priority is based upon order of creation: first created -> highest priority.

  # Sample of regular route:
  #   map.connect 'products/:id', :controller => 'catalog', :action => 'view'
  # Keep in mind you can assign values other than :controller and :action

  # Sample of named route:
  #   map.purchase 'products/:id/purchase', :controller => 'catalog', :action => 'purchase'
  # This route can be invoked with purchase_url(:id => product.id)

  # Sample resource route (maps HTTP verbs to controller actions automatically):
  #   map.resources :products

  # Sample resource route with options:
  #   map.resources :products, :member => { :short => :get, :toggle => :post }, :collection => { :sold => :get }

  # Sample resource route with sub-resources:
  #   map.resources :products, :has_many => [ :comments, :sales ], :has_one => :seller
  
  # Sample resource route with more complex sub-resources
  #   map.resources :products do |products|
  #     products.resources :comments
  #     products.resources :sales, :collection => { :recent => :get }
  #   end

  # Sample resource route within a namespace:
  #   map.namespace :admin do |admin|
  #     # Directs /admin/products/* to Admin::ProductsController (app/controllers/admin/products_controller.rb)
  #     admin.resources :products
  #   end

  # You can have the root of your site routed with map.root -- just remember to delete public/index.html.
  map.root :controller => "welcome"

  # See how all your routes lay out with "rake routes"

  # Install the default routes as the lowest priority.
   
  map.connect ':controller/:action/:id'
  map.connect ':controller/:action/:id.:format'

end
